1. Field of the Invention
This invention relates in general to the recovery from a software or hardware error in a data processing system, and more particularly to a method and apparatus for efficiently generating and implementing engine error codes and verifying the correctness of the implementation of the engine error codes.
2. Description of Related Art
Data output devices used in conjunction with host computing systems, such as printers and plotters, use a complex series of interactions between the software services and objects and the hardware functions to provide the printed or otherwise processed end-product. In such a system, a document or series of documents comprising at least one print job are successively processed, resulting in image signals which electronically stored. The signals are later transferred to a printer for formation of the images on paper. Such a document can be printed any number of times or processed in any number of ways (e.g., words deleted or added; image magnified or reduced, etc.).
In such a system, the occurrence of faults on all levels of functioning can occur. Software object faults may occur to result in such faults as illegal job parameters, corrupted data, resource problems, input master errors, font problems, etc. Mechanisms for dealing with such faults are an integral and necessary component of the system, because such faults will result in the interruption of the system, and possibly a crash of the system which requires that the system be rebooted. Information from the system provided to the operator directing the operator to the fault or faults causing the job interruption is critical to the efficient operation of the system.
When an error is discovered in a data processing system, such as a printer or plotter, a specific recovery action, or series of actions, may be generated to restore the system to working order. These actions include restarting a software process, reinitializing a data area, rebooting a central processing unit, resetting a piece of hardware, etc. In a complicated system, it is often difficult to determine in real time which basic hardware or software components of the system are at fault and require the attention of recovery actions. Because the availability of the entire data processing system is dependent upon a rapid reacquisition of full working status, an efficient strategy is required to minimize system recovery time.
One known method for recovery from a detected error is to examine all known system variables to precisely determine the state of the data processing system. The actual system state is then compared to all possible system states for which a sequence of recovery actions is known. The possible system states are referred to as xe2x80x9cerror statesxe2x80x9d and are retained in system memory, usually in the form of an error table. If the actual system state matches an error state, the sequence of recovery actions associated with such error state is invoked.
The detailed logic necessary to implement an error recovery subsystem is complex and often requires a significant development effort. The large number of system variables in a data processing system results in an immense number of system states which must be detectable, and in an immense number of error states which must be retained in memory. Moreover, although new error conditions are frequently identified during the life of the data processing system, additions and modifications to the logic of an error recovery subsystem are very difficult and expensive. For example, the logic used to program the system must be redesigned to retain and utilize new error states and their associated sequences of recovery actions as they are discovered. In addition, redesign is necessary as the appropriate sequence of recovery actions for a given error state changes due to aging of the data processing system components. The design and maintenance of error recovery subsystems thus tend to be costly and unresponsive to the experience gained during the life of a data processing system. Nevertheless, engines in a data processing system product line may be implemented with similar structures. Yet, each product has its own method for processing error codes. Moreover, theses unique processes are hard-coded for each device. Thus, each time the product error specification is changed, the error table is modified and the error processing system has to be re-coded.
It can be seen then that there is a need for a method and apparatus for efficiently generating and implementing engine error codes and verifying the correctness of the implementation of the engine error codes.
To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a method and apparatus for efficiently generating and implementing engine error codes and verifying the correctness of the implementation of the engine error codes.
The present invention solves the above-described problems by implementing a general run time error processing method that may be common to engines in a range of products. This allows modifications to be made to the error table for changes to the product error specification and for new products without necessitating a re-coding of the error processing system.
A method in accordance with the principles of the present invention includes providing an error table specifically tailored for a first engine and generating a list of errors according to the error table using a general run time generator.
Other embodiments of a method in accordance with the principles of the invention may include alternative or optional additional aspects. One such aspect of the present invention is that the error table is generated according to a product error specification.
Another aspect of the present invention is that the method further includes updating the product error specification and updating the error table to match the product error specification.
Another aspect of the present invention is that the method further includes receiving an error code from a first engine, generating engine errors based upon a structure provided by the error table, processing the generated engine errors using error masking, transforming the errors and returning a list of errors.
Another aspect of the present invention is that the method further includes, prior to processing the generated engine errors using error masking, determining whether the generated engine errors comprise special error instructions and processing the special instructions when the generated engine errors comprise special error instructions.
Another aspect of the present invention is that the processing the generated engine errors using error masking further comprises setting an error mask.
Another aspect of the present invention is that the processing the generated engine errors using error masking further comprises clearing an error mask.
Another aspect of the present invention is that the generating engine errors based upon a structure provided by the error table comprises using a breadth first search.
Another aspect of the present invention is that the generating engine errors based upon a structure provided by the error table comprises using a depth first search.
Another aspect of the present invention is that the generating engine errors based upon a structure provided by the error table comprises using a combination of breadth and depth searching.
Another embodiment of the present invention includes a system for processing errors, wherein the system includes an error table describing error states for use in generating error codes based upon the an error event, an engine for providing an error event and an error processor, coupled to the engine and the error table, the error processor including a general run time error generator for generating a list of errors according to the error table.
Another aspect of the present invention is that the error table is generated according to a product error specification.
Another aspect of the present invention is that the error processor receives an error code from a first engine, generates engine errors based upon a structure provided by the error table, processes the generated engine errors using error masking, transforms the errors and returns a list of errors.
Another aspect of the present invention is that the error processor, prior to processing the generated engine errors using error masking, determines whether the generated engine errors comprise special error instructions and processes the special instructions when the generated engine errors comprise special error instructions.
Another aspect of the present invention is that the error processor processes the generated engine errors using error masking further comprises setting an error mask.
Another aspect of the present invention is that the error processor processes the generated engine errors using error masking further comprises clearing an error mask.
Another aspect of the present invention is that the error processor generates engine errors based upon a structure provided by the error table using a breadth first search.
Another aspect of the present invention is that the error processor generates engine errors based upon a structure provided by the error table comprises using a depth first search.
Another aspect of the present invention is that the error processor generates engine errors based upon a structure provided by the error table comprises using a combination of breadth and depth searching.
In another embodiment of the present invention, the error processing system may be implemented in a printer, wherein the printer includes a channel for receiving a data stream from a physical connection running a transport protocol stack, an interpretor, coupled to the channel, for converting a description of intended print instances in the data stream into images that are to be marked on print media, an input, output and a marker, the input providing the media to a marker for producing marks on the print media according to the images, the marker providing the printed media to the output and a system controller for implementing control functions for processing the images from the interpreter to the marker.
In another embodiment of the present invention, the method for processing error events may be implemented on an article of manufacture, wherein the article of manufacture includes a program storage medium readable by a computer, the medium tangibly embodying one or more programs of instructions executable by the computer to perform the method for efficiently generating and implementing engine error codes and verifying the correctness of the implementation of the engine error codes.